﻿//《C语言从入门到精通》P28
// 第一章 初识C语言
// 1.3 经典范例
// 2、三个数由小到大排列

#include <stdio.h>

int main()
{
	//  定义变量，获取用户输入的数字
	int num_1, num_2, num_3, trans;
	printf("请分别输入三个数，每输入一个数按下回车输入下一个数：\n");
	scanf_s("%d %d %d", &num_1, &num_2, &num_3);

	//  如果第一个数大于第二个数则执行本段代码，否则跳过本段代码
	//  如果执行了，num_1 将成为前两个数中最小的；
	//  如果没有执行，说明 num_1 本来就是两个数中最小的。
	if (num_1 > num_2)
	{
		trans = num_1;
		num_1 = num_2;
		num_2 = trans;
	}

	//  不论上段代码执行与否，num_1 成为了前两个数中最小的。
	//  现和第三个数比较：
	//  如果 num_1 大于 num_3，那么本段代码将执行，执行后 num_1 又成为最小的数；
	//  如果 num_1 小于 num_3，本段代码不会被执行，num_1 仍然是 3 个数中最小的，
	//  但是，这时 num_2 和 num_3 的大小还需要下一段代码来判断。
	if (num_1 > num_3)
	{
		trans = num_1;
		num_1 = num_3;
		num_3 = trans;
	}

	//  如果前两段代码都没有被执行，说明 num_1 < num_2，并且 num_1 < num_3，那么现在只需要判断 num_2 和 num_3 的大小。
	//  如果前两段代码被执行，则程序运行到本段代码时，三个数的大小关系也成为了： num_1 < num_2，并且 num_1 < num_3；
	//  所以现在仍然需要判断 num_2 和 num_3 的大小。
	if (num_2 > num_3)
	{
		trans = num_2;
		num_2 = num_3;
		num_3 = trans;
	}
	//  另外我们发现这些语句中，四个变量形成了一个循环：t=1=2=3=t，可以当作一个固定用法记忆下来

	printf("您所输入的数字按从小到大排列为：%d，%d，%d。", num_1, num_2, num_3);
	//  输出的内容是将引号内的部分插入到输出流中，所以引号内的标点符号是中文的也可以正常运行

	return 0;
}
